package redsocialujaen_pa;


import excepciones.*;
import java.util.*;
import javax.persistence.*;
import redSocialUjaenDAO.DAOUsuario;
import redSocialUjaenDAO.gestorPersistencia;

/**
 *
 * @author Carmen M. Morillo Arias
 *         David Contreras García
 */

public class UJaenSocial {
    
    /**
     * Constructor. Crea la conexión con la BD
     * @throws ErrorConexionBD 
     */
    public UJaenSocial() throws ErrorConexionBD{
        
      gestorPersistencia.crearConexion();  
    }
    
    
    /**
     * Añade un usuario a la red social
     * @param u: es el usuario que añadimos a la red social
     * @throws ErrorCreacionUsuario si ya existe un usuario registrado con ese email
     */
    public void nuevoUsuario(Usuario u) throws ErrorCreacionUsuario{
        DAOUsuario.instancia().crear(u);
    }
    
    /**
     * Busca a los usuarios coincidentes con un término de búsqueda 
     * @param termino: palabra empleada en la búsqueda. Ha de coincidir con algún término del nombre o la descripción
     * @return estructura de datos con los usuarios cuyo nombre o descripción coinciden con el término de búsqueda
     */
    public Collection<Usuario> buscarUsuario(String termino){
        return DAOUsuario.instancia().buscarUsuarioPorTermino(termino);
    }
    
    /**
     * Logea al usuario en la aplicación
     * @return null si no hay un error en el login, Usuario si ha sido posible entrar en la aplicación
     * @see claveValida
     */
    public Usuario loginUsuario(String email, String clave) throws ErrorBusquedaUsuarioEmail{
        Usuario user = DAOUsuario.instancia().buscarUsuarioEmail(email);
        boolean encontrado = false;
        
        if(user.getEmail().equalsIgnoreCase(email) && user.claveValida(clave)) return user;
        else return null;
    }

}